package com.dudu.controller;

import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.dudu.bean.ChargingRuleBean;
import com.dudu.bean.ParamBean;
import com.dudu.bean.UserBean;
import com.dudu.bean.ZTreeBean;
import com.dudu.service.IRuleService;
import com.dudu.service.impl.RuleServiceImpl;

import core.CoreService;
/**
 * 计费规则(管理平台)
 * @author gaoxs
 *
 */
public class RuleController extends CoreService implements IRuleController {
	private IRuleService ruleService=new RuleServiceImpl();
	//当前登陆用户
	private  final String KEY_CURRENT_USER = "key_current_user";
	/**
     * 插入规则信息
     * @return
     */
	@Override
	public String doInsert() {
		log.info("RuleAction.doInsert");
		//最后返回的对象
		JSONObject object = new JSONObject();
		//获取当前登录用户信息
        UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
		//判断如果用户信息不为空则继续下一步
		if (currentUser != null) {
			//获取前台传入的data数据
			String dataStr = (String) this.getRequest().getParameter("data");
			//转化为json对象
			JSONObject data = JSONObject.fromObject(dataStr);
			//获取相应数据
			String names = data.getString("names");//能力名称
			String type = data.getString("type");//能力标识
			String parent_id = data.getString("parent_id");//父节点
			String menu_type = data.getString("menu_type");//能力级别
			String comments = data.getString("comments");//能力描述信息
			//能力规则实体类 
			ChargingRuleBean chargingRule=new ChargingRuleBean();
			
			chargingRule.setNames(names);
			chargingRule.setType(type);
			chargingRule.setParent_id(Integer.parseInt(parent_id));
			chargingRule.setMenu_type(menu_type);
			chargingRule.setComments(comments);
			
			String ruleIn = ruleService.doInsertChargingRule(chargingRule);
			if(!ruleIn.equals("-1")){
	        	object.put("flag", "000000");
		        object.put("desc", "success");
	        }else{
	        	object.put("flag", "100000");
	        }
		}else{
			object.put("flag", "100000");
		}
		return returnData(object.toString());
	}
	/**
     * 编辑规则信息
     * @return
     */
	@Override
	public String doEdit() {
		log.info("RuleAction.doEdit");
		//最后返回的对象
		JSONObject object = new JSONObject();
		//获取当前登录用户信息
        UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
		//判断如果用户信息不为空则继续下一步
		if (currentUser != null) {
			//获取前台传入的data数据
			String dataStr = (String) this.getRequest().getParameter("data");
			//转化为json对象
			JSONObject data = JSONObject.fromObject(dataStr);
			//获取相应数据
			String id = data.getString("id");//能力名称
			String names = data.getString("names");//能力名称
			String type = data.getString("type");//能力标识
			String parent_id = data.getString("parent_id");//父节点
			String menu_type = data.getString("menu_type");//能力级别
			String comments = data.getString("comments");//能力描述信息
			//能力规则实体类 
			ChargingRuleBean chargingRule=new ChargingRuleBean();
			
			chargingRule.setId(Integer.parseInt(id));
			chargingRule.setNames(names);
			chargingRule.setType(type);
			chargingRule.setParent_id(Integer.parseInt(parent_id));
			chargingRule.setMenu_type(menu_type);
			chargingRule.setComments(comments);
			
			String ruleIn = ruleService.doUpdateChargingRule( chargingRule);
			if(!ruleIn.equals("-1")){
	        	object.put("flag", "000000");
		        object.put("desc", "success");
	        }else{
	        	object.put("flag", "100000");
	        }
		}else{
			object.put("flag", "100000");
		}
		return returnData(object.toString());
	}
	
	/**
	 * 查询所有规则信息
	 * 能力规则设置(分页)
	 * @return
	 */
	public String queryRule(){
		//最后返回的对象
		JSONObject object = new JSONObject();
		//放在JSONObject里面的数据对象
        JSONArray jsonArray = new JSONArray();
		//查询结果
		List<ChargingRuleBean> list=new ArrayList<ChargingRuleBean>();
		
		//获取当前登录用户信息
		UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
		//判断如果用户信息不为空则继续下一步
		if (currentUser != null) {
			//获取页面分页用信息；设置为空，这样就可以在界面上不显示“当前显示 1 到 8 条，共 8 条记录”这句话
//	        String pageSql = this.getPageSql();
			String pageSql ="";
	        //获取查询参数信息
	        String paramSql = this.convertParams();
	        //查询总数量
	        int totalRule=ruleService.getTotalRule(paramSql);
	        //查询列表数据
			list = ruleService.queryRule( pageSql, paramSql);
			
			//将查询的数据转化为json格式
			jsonArray = JSONArray.fromObject(list);
			
			JSONObject dataobject = new JSONObject();
			//总数量信息
			dataobject.put("totalItemNum", totalRule);
			//具体数据信息
	        dataobject.put("items", jsonArray);
	        object.put("data", dataobject);
			
			object.put("flag", "000000");
	        object.put("desc", "success");
		}else{
			object.put("flag", "100000");
		}
		return returnData(object.toString());
	}
	/**
     * 编辑规则信息，根据id设置默认使用，ruleinfo.js
     * 能力规则设置
     * @return
     */
	public String doEditDefaultUsing() {
		log.info("RuleAction.doEditDefaultUsing");
		//最后返回的对象
		JSONObject object = new JSONObject();
		//获取当前登录用户信息
        UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
		//判断如果用户信息不为空则继续下一步
		if (currentUser != null) {
			//获取前台传入的data数据
			String dataStr = (String) this.getRequest().getParameter("data");
			//转化为json对象
			JSONObject data = JSONObject.fromObject(dataStr);
			//获取相应数据
			String id = data.getString("id");//能力id
			int ruleIn = ruleService.doEditDefaultUsing(id);
			if(ruleIn!=-1){
	        	object.put("flag", "000000");
		        object.put("desc", "success");
	        }else{
	        	object.put("flag", "100000");
	        }
		}else{
			object.put("flag", "100000");
		}
		return returnData(object.toString());
	}
	/**
	 * 查询所有规则信息
	 * 树型 菜单
	 * @return
	 */
	
	public String queryAllRule() {
		log.info("PoolNumberController.queryAllRule");
		//最后返回的对象
		JSONObject object = new JSONObject();
		//放在JSONObject里面的数据对象
        JSONArray jsonArray = new JSONArray();
		//查询结果
		List<ZTreeBean> list=new ArrayList<ZTreeBean>();
		//获取当前登录用户信息
        UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
		//判断如果用户信息不为空则继续下一步
		if (currentUser != null) {
			//获取页面分页用信息；设置为空，这样就可以在界面上不显示“当前显示 1 到 8 条，共 8 条记录”这句话
//	        String pageSql = this.getPageSql();
			String pageSql ="";
	        //获取查询参数信息
	        String paramSql = "";
	        //查询总数量
	        int totalRule=this.ruleService.getTotalRule( paramSql);
	        //查询列表数据
			list = this.ruleService.queryAllRule( pageSql, paramSql);
			
			//将查询的数据转化为json格式
			jsonArray = JSONArray.fromObject(list);
			
			JSONObject dataobject = new JSONObject();
			//总数量信息
			dataobject.put("totalItemNum", totalRule);
			//具体数据信息
	        dataobject.put("items", jsonArray);
	        object.put("data", dataobject);
			
			object.put("flag", "000000");
	        object.put("desc", "success");
		}else{
			object.put("flag", "100000");
		}
		return returnData(object.toString());
	}

	/**
	 * 查询所有父节点信息列表
	 * @return
	 */
	@Override
	public String queryAllParentId() {
		log.info("RuleAction.queryAllParentId");
		//最后返回的对象
		JSONObject object = new JSONObject();
		//放在JSONObject里面的数据对象
        JSONArray jsonArray = new JSONArray();
		//获取当前登录用户信息
        UserBean currentUser = (UserBean) this.getSession().getAttribute(KEY_CURRENT_USER);
        List<ParamBean> cr = null;
		//判断如果用户信息不为空则继续下一步
        if (currentUser != null) {
        	// 获取前台传入的parent_id数据
        	//String parentId = (String) this.getRequest().getParameter("parent_id");
        	cr=ruleService.queryAllParentId(null);
        	//将查询的数据转化为json格式
			jsonArray = JSONArray.fromObject(cr);
			JSONObject rootEl = new JSONObject();
			rootEl.put("id", "-1");
			rootEl.put("text", "根节点");
			jsonArray.add(rootEl);
			JSONObject dataobject = new JSONObject();
			//具体数据信息
	        dataobject.put("items", jsonArray);
	        object.put("data", dataobject);
			
			object.put("flag", "000000");
	        object.put("desc", "success");
        }else{
			object.put("flag", "100000");
		}
		
		return returnData(jsonArray.toString());
	}
}
